//package cn.gok.util;
//
//import java.text.SimpleDateFormat;
//import java.util.Arrays;
//import java.util.Date;
//import java.util.List;
//import java.util.function.BiFunction;
//import java.util.function.Consumer;
//import java.util.function.Function;
//import java.util.function.Supplier;
//import java.util.stream.Stream;
//
//class Student{
//
//}
//public class 常用函数式子接口 {
//    public static void main(String[] args) {
//        //Runable接口();
//        //Consumer接口();
//        //Supplier接口();
//        //Function接口();
//        //简化lambda();
//        stream操作();
////        doRun(()->{
////            System.out.println("xxxxxx");
////        });
////        private static void doRun(Runnable r){
////            r.run();
////        }
//    }
//
//    private static void stream操作() {
//        Stream s1= Stream.of("a","b","c");
//        s1.forEach(System.out::println);
//        System.out.println("---------");
//        List<Integer> list= Arrays.osList(100,21,10,16);
//        Stream s2=list.stream();
//        s2.forEach(System.out::println);
//    }
//
//    private static void 简化lambda() {
//        Consumer<String> con = System.out::println;
//        //Function<String,Integer> function=(str)->{return Integer.parseInt(str)};
//        Function<String, Integer> function = Integer::parseInt;
//        String str="abcdefg";
//        Function<Integer,String> function2=str::substring;
//        System.out.println(function2.apply(2));
//
//        BiFunction<String,Integer,Student> biFunction=Student::new;
//        System.out.println(biFunction.apply("ff",28));
//    }
//
//    private static void Function接口() {
//        //一个入参，有返回，获取字符串长度
//        Function<String, Integer> function1 = str -> str.length();
//
//        Function<Integer, Integer> function2 = i -> i + 100;
//
//        function1.apply("我是sss");//通过apply来执行函数
//        //函数的连接调用
//        function2.compose(function1).apply("我是sss");
//
//        Function<Float, Float> function3 = r -> r * r;
//        Function<Float, Float> function4 = r -> r * 100;
//        System.out.println(function4.compose(function3).apply(16.0f));
//    }
//
//    private static void Supplier接口() {
//        Supplier<String> sup = () -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
//        System.out.println("执行结果：" + sup.get());
//    }
//
//    private static void Consumer接口() {
//        Consumer<String> con1 = (String str) -> {
//            str += "!";
//        };
//    }
//
//    private static void Runable接口() {
//        int x = 100;
//        Runnable r = new Runnable() {
//            private int y;
//
//            private void test() {
//            }
//
//            @Override
//            public void run() {
//                System.out.println("!!!x=" + x);
//            }
//        };
//        Runnable r2 = () -> {
//            int y = 0;
//            System.out.println("!!!x=" + x);
//        };
//        r2.run();
//    }
//}
